package com.cskaoyan.processor;

import com.cskaoyan.bean.DataSource;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;

/**
 * 作用范围：除了他本身，其他的所有组件
 *          通用的处理
 */
public class CustomBeanPostProcessor implements BeanPostProcessor {

    //第一个参数：正在执行生命周期的组件的实例
    //第二个参数：组件的name（id）
    @Override
    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
        //可以 狸猫换太子
        System.out.println("6、BeanPostProcessor的before：" + beanName);
        if (bean instanceof DataSource) {
            DataSource dataSource = (DataSource) bean;
            String password = dataSource.getPassword();//654321
            dataSource.setPassword("123456");
            return dataSource;
        }
        return bean;
    }

    @Override
    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
        System.out.println("9、BeanPostProcessor的after：" + beanName);
        return null;
    }
}
